95bff04b4cd247bf8c29014e971e6ce6d70689ca,src/org/rascalmpl/library/experiments/Compiler/RVM/Interpreter/BytecodeGenerator.java,BytecodeGenerator,emitInlineCallMuPrimNGeneral,#MuPrimitive#number#,1479

Before Change


	}

	private void emitInlineCallMuPrimNGeneral(MuPrimitive muprim, int arity) {
		mv.visitFieldInsn(GETSTATIC, Type.getInternalName(MuPrimitive.class), muprim.name(),
				Type.getDescriptor(MuPrimitive.class));

		mv.visitVarInsn(ALOAD, STACK);		// stack
		mv.visitVarInsn(ILOAD, SP);			// sp

		emitIntValue(arity);				// arity

		mv.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(MuPrimitive.class), "executeN", Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE),false);
											// sp = callMuPrimN(stack, sp, arity)
		mv.visitInsn(ICONST_M1);
		mv.visitInsn(IADD);					// sp--

After Change



		emitIntValue(arity);				// arity

	    mv.visitInvokeDynamicInsn(muprim.name(), 
            Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE), bootstrapMuPrimitive());

//		mv.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(MuPrimitive.class), "executeN", Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE),false);
											// sp = callMuPrimN(stack, sp, arity)